import java.util.Arrays;
import java.util.Scanner;

public class test {
    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            //1.建dp表
            //2.初始化
            //3.填表
            //4.返回值
            int n = in.nextInt();
            int v = in.nextInt();
            int[][] aims = new int[n][2];
            for(int i = 0;i <n;i++){
                aims[i][0] = in.nextInt();
                aims[i][1] = in.nextInt();
            }
            //第一个问题
            int[] dp = new int [v +1];
            for(int i = 0;i < n;i++){
                int vi = aims[i][0];
                int wi = aims[i][1];
                for(int j = v;j >= vi;j--){
                    dp[j] = Math.max(dp[j] , dp[j - vi] + wi);
                }
            }
            int ans1 = dp[v];
            //处理第二个问题
            int[] full = new int[v +1];
            Arrays.fill(full , Integer.MIN_VALUE);
            full[0] = 0;
            for(int i = 0; i<n;i++){
                int vi = aims[i][0];
                int wi = aims[i][1];
                for(int j = v; j>=vi;j--){
                    if(full[j - vi] != Integer.MIN_VALUE){
                        full[j] = Math.max(full[j],full[j - vi] + wi);
                    }
                }
            }
            int ans2 = full[v] >= 0? full[v] : 0;
            System.out.println(ans1);
            System.out.println(ans2);

        }
    }
}
